﻿namespace wwm.LeetCodeHelper.Servers;

public class Interfaces
{


}

public class Credit
{
    public string session { get; set; }
    public string csrfToken { get; set; }
}
/// <summary>
/// uri分类
/// </summary>
public class EndoPointUri
{
    public Uris us { get; set; }
    public Uris cn { get; set; }
}
/// <summary>
/// 详细uri
/// </summary>
public class Uris
{
    public string Base { get; set; }
    public string Login { get; set; }
    public string Graphql { get; set; }
    public string ProblemsAll { get; set; }
    public string Problem { get; set; }
    public string Submit { get; set; }
    public string Submission { get; set; }
}

public class HttpRequestOptions
{
    public string method { get; set; } = "GET";
    public string url { get; set; }
    public string referer { get; set; }
    public bool resolveWithFullResponse { get; set; }
    public Dictionary<string, string> form { get; set; }
    public string body { get; set; }
}

public class GraphQLRequestOptions
{
    public string operationName { get; set; }
    public string origin { get; set; }
    public string referer { get; set; }
    public string query { get; set; }
    public variablesDto variables { get; set; }
}

public class variablesDto
{
    public string slug { get; set; }
    public string categorySlug { get; set; }
    public object filters { get; set; }
    public int limit { get; set; } = 50;
    public int skip { get; set; } = 0;
    public string titleSlug { get; set; }
}
#region AllProblems
/// <summary>
/// AllProblemDto
/// </summary>
public record AllProblemDto
{
    public string user_name { get; set; }
    public int num_solved { get; set; }
    public int num_total { get; set; }
    public int ac_easy { get; set; }
    public int ac_medium { get; set; }
    public int ac_hard { get; set; }
    public Stat_Status_Pairs[] stat_status_pairs { get; set; }
    public int frequency_high { get; set; }
    public int frequency_mid { get; set; }
    public string category_slug { get; set; }
}

public record Stat_Status_Pairs
{
    public Stat stat { get; set; }
    public string status { get; set; }
    public Difficulty difficulty { get; set; }
    public bool paid_only { get; set; }
    public bool is_favor { get; set; }
    public int frequency { get; set; }
    public int progress { get; set; }
}

public record Stat
{
    public int question_id { get; set; }
    public string question__title { get; set; }
    public string question__title_slug { get; set; }
    public bool question__hide { get; set; }
    public int total_acs { get; set; }
    public int total_submitted { get; set; }
    public int total_column_articles { get; set; }
    public string frontend_question_id { get; set; }
    public bool is_new_question { get; set; }
}

public record Difficulty
{
    public int level { get; set; }
}


#endregion
#region ProblemsByTags

public record AllProblemByTagDto
{
    public Data data { get; set; }
}

public record Data
{
    public Topictag topicTag { get; set; }
}

public record Topictag
{
    public Question[] questions { get; set; }
}

public record Question
{
    public string questionId { get; set; }
    public string titleSlug { get; set; }
    public string questionFrontendId { get; set; }
    public string status { get; set; }
    public string title { get; set; }
    public string translatedTitle { get; set; }
    public string difficulty { get; set; }
    public string stats { get; set; }
    public bool isPaidOnly { get; set; }
    public object frequencyTimePeriod { get; set; }
    public Topictag1[] topicTags { get; set; }
    public string __typename { get; set; }
}

public record Topictag1
{
    public string id { get; set; }
    public string name { get; set; }
    public string translatedName { get; set; }
    public string slug { get; set; }
    public string __typename { get; set; }
}

#endregion
#region today record
public class TodayRecordDto
{
    public TodayRecordData data { get; set; }
}
public class TodayRecordData
{
    public TodayRecord[] todayRecord { get; set; }
}

public class TodayRecord
{
    public string userStatus { get; set; }
    public int comboTimes { get; set; }
    public string __typename { get; set; }
}

#endregion
#region today title slug
public class TodayTitleSlugDto
{
    public TodayTitleSlugData data { get; set; }
}
public class TodayTitleSlugData
{
    public TodayTitleSlugRecord[] todayRecord { get; set; }
}

public class TodayTitleSlugRecord
{
    public TodayTitleSlugRecordData question { get; set; }
    public string __typename { get; set; }
}

public class TodayTitleSlugRecordData
{
    public string titleSlug { get; set; }
    public string __typename { get; set; }
}

#endregion
#region simple all problem
public record AllProblemSimpleDto
{
    public Data data { get; set; }
}
public record AllProblemSimpleQuestion
{
    public AllProblemSimpleBetaDto[] allQuestionsBeta { get; set; }
}
public record AllProblemSimpleBetaDto
{
    public string categoryTitle { get; set; }
    public string difficulty { get; set; }
    public bool isPaidOnly { get; set; }
    public string questionFrontendId { get; set; }
    public string questionId { get; set; }
    public string status { get; set; }
    public string title { get; set; }
    public string titleSlug { get; set; }
    public string translatedTitle { get; set; }
    public string __typename { get; set; }
}
#endregion
#region search by problemId

public class SearchProblemDto
{
    public SearchProblemData data { get; set; }
}

public class SearchProblemData
{
    public SearchProblemsetquestionlist problemsetQuestionList { get; set; }
}

public class SearchProblemsetquestionlist
{
    public string __typename { get; set; }
    public SearchProblemQuestion[] questions { get; set; }
    public bool hasMore { get; set; }
    public int total { get; set; }
}

public class SearchProblemQuestion
{
    public string __typename { get; set; }
    public float acRate { get; set; }
    public string difficulty { get; set; }
    public int freqBar { get; set; }
    public bool paidOnly { get; set; }
    public string status { get; set; }
    public string frontendQuestionId { get; set; }
    public bool isFavor { get; set; }
    public int solutionNum { get; set; }
    public string title { get; set; }
    public string titleCn { get; set; }
    public string titleSlug { get; set; }
    public SearchProblemTopictag[] topicTags { get; set; }
    public SearchProblemExtra extra { get; set; }
}

public class SearchProblemExtra
{
    public int companyTagNum { get; set; }
    public bool hasVideoSolution { get; set; }
    public SearchProblemTopcompanytag[] topCompanyTags { get; set; }
    public string __typename { get; set; }
}

public class SearchProblemTopcompanytag
{
    public string imgUrl { get; set; }
    public string slug { get; set; }
    public string __typename { get; set; }
}

public class SearchProblemTopictag
{
    public string id { get; set; }
    public string name { get; set; }
    public string slug { get; set; }
    public string nameTranslated { get; set; }
    public string __typename { get; set; }
}

#endregion